// Generated from Program.g4 by ANTLR 4.1

package antlr;

import testaux.*;
import java.util.Arrays;

import org.antlr.v4.runtime.Lexer;
import org.antlr.v4.runtime.CharStream;
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.TokenStream;
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.atn.*;
import org.antlr.v4.runtime.dfa.DFA;
import org.antlr.v4.runtime.misc.*;

@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
public class ProgramLexer extends Lexer {
	protected static final DFA[] _decisionToDFA;
	protected static final PredictionContextCache _sharedContextCache =
		new PredictionContextCache();
	public static final int
		T__2=1, T__1=2, T__0=3, LPAR=4, RPAR=5, LSQ=6, RSQ=7, LC=8, RC=9, LT=10, 
		GT=11, ASSIGN=12, SEMICOLON=13, COMMA=14, IF=15, FUNCTION=16, PASS=17, 
		RET=18, IDENT=19, INT=20, WS=21;
	public static String[] modeNames = {
		"DEFAULT_MODE"
	};

	public static final String[] tokenNames = {
		"<INVALID>",
		"'+'", "'-'", "'*'", "'('", "')'", "'['", "']'", "'{'", "'}'", "'<'", 
		"'>'", "'='", "';'", "','", "'IF'", "'DEF'", "'PASS'", "'RET'", "IDENT", 
		"INT", "WS"
	};
	public static final String[] ruleNames = {
		"T__2", "T__1", "T__0", "LPAR", "RPAR", "LSQ", "RSQ", "LC", "RC", "LT", 
		"GT", "ASSIGN", "SEMICOLON", "COMMA", "IF", "FUNCTION", "PASS", "RET", 
		"IDENT", "INT", "WS"
	};


	public ProgramLexer(CharStream input) {
		super(input);
		_interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache);
	}

	@Override
	public String getGrammarFileName() { return "Program.g4"; }

	@Override
	public String[] getTokenNames() { return tokenNames; }

	@Override
	public String[] getRuleNames() { return ruleNames; }

	@Override
	public String[] getModeNames() { return modeNames; }

	@Override
	public ATN getATN() { return _ATN; }

	@Override
	public void action(RuleContext _localctx, int ruleIndex, int actionIndex) {
		switch (ruleIndex) {
		case 20: WS_action((RuleContext)_localctx, actionIndex); break;
		}
	}
	private void WS_action(RuleContext _localctx, int actionIndex) {
		switch (actionIndex) {
		case 0: skip(); break;
		}
	}

	public static final String _serializedATN =
		"\3\uacf5\uee8c\u4f5d\u8b0d\u4a45\u78bd\u1b2f\u3378\2\27l\b\1\4\2\t\2\4"+
		"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
		"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
		"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\3\2\3\2\3\3\3\3\3\4\3\4\3\5\3"+
		"\5\3\6\3\6\3\7\3\7\3\b\3\b\3\t\3\t\3\n\3\n\3\13\3\13\3\f\3\f\3\r\3\r\3"+
		"\16\3\16\3\17\3\17\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3"+
		"\22\3\22\3\23\3\23\3\23\3\23\3\24\3\24\7\24\\\n\24\f\24\16\24_\13\24\3"+
		"\25\6\25b\n\25\r\25\16\25c\3\26\6\26g\n\26\r\26\16\26h\3\26\3\26\2\27"+
		"\3\3\1\5\4\1\7\5\1\t\6\1\13\7\1\r\b\1\17\t\1\21\n\1\23\13\1\25\f\1\27"+
		"\r\1\31\16\1\33\17\1\35\20\1\37\21\1!\22\1#\23\1%\24\1\'\25\1)\26\1+\27"+
		"\2\3\2\5\4\2C\\c|\4\2\62;c|\5\2\13\f\17\17\"\"n\2\3\3\2\2\2\2\5\3\2\2"+
		"\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21"+
		"\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2"+
		"\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3"+
		"\2\2\2\2)\3\2\2\2\2+\3\2\2\2\3-\3\2\2\2\5/\3\2\2\2\7\61\3\2\2\2\t\63\3"+
		"\2\2\2\13\65\3\2\2\2\r\67\3\2\2\2\179\3\2\2\2\21;\3\2\2\2\23=\3\2\2\2"+
		"\25?\3\2\2\2\27A\3\2\2\2\31C\3\2\2\2\33E\3\2\2\2\35G\3\2\2\2\37I\3\2\2"+
		"\2!L\3\2\2\2#P\3\2\2\2%U\3\2\2\2\'Y\3\2\2\2)a\3\2\2\2+f\3\2\2\2-.\7-\2"+
		"\2.\4\3\2\2\2/\60\7/\2\2\60\6\3\2\2\2\61\62\7,\2\2\62\b\3\2\2\2\63\64"+
		"\7*\2\2\64\n\3\2\2\2\65\66\7+\2\2\66\f\3\2\2\2\678\7]\2\28\16\3\2\2\2"+
		"9:\7_\2\2:\20\3\2\2\2;<\7}\2\2<\22\3\2\2\2=>\7\177\2\2>\24\3\2\2\2?@\7"+
		">\2\2@\26\3\2\2\2AB\7@\2\2B\30\3\2\2\2CD\7?\2\2D\32\3\2\2\2EF\7=\2\2F"+
		"\34\3\2\2\2GH\7.\2\2H\36\3\2\2\2IJ\7K\2\2JK\7H\2\2K \3\2\2\2LM\7F\2\2"+
		"MN\7G\2\2NO\7H\2\2O\"\3\2\2\2PQ\7R\2\2QR\7C\2\2RS\7U\2\2ST\7U\2\2T$\3"+
		"\2\2\2UV\7T\2\2VW\7G\2\2WX\7V\2\2X&\3\2\2\2Y]\t\2\2\2Z\\\t\3\2\2[Z\3\2"+
		"\2\2\\_\3\2\2\2][\3\2\2\2]^\3\2\2\2^(\3\2\2\2_]\3\2\2\2`b\4\62;\2a`\3"+
		"\2\2\2bc\3\2\2\2ca\3\2\2\2cd\3\2\2\2d*\3\2\2\2eg\t\4\2\2fe\3\2\2\2gh\3"+
		"\2\2\2hf\3\2\2\2hi\3\2\2\2ij\3\2\2\2jk\b\26\2\2k,\3\2\2\2\6\2]ch";
	public static final ATN _ATN =
		ATNSimulator.deserialize(_serializedATN.toCharArray());
	static {
		_decisionToDFA = new DFA[_ATN.getNumberOfDecisions()];
		for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) {
			_decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i);
		}
	}
}